#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>

int main()
{
  printf("hello printf\n");
  fprintf(stdout,"hello fprintf\n");

  const char* msg = "hello write\n";
  write(1,msg,strlen(msg));
  fork();
  return 0;
}

//int main()
//{
//    int fd=open("log.txt",O_RDONLY);
//    if(fd == -1)
//    {
//        perror("open");
//        return 1;
//    }
//    //输入重定向
//    dup2(fd,0);
//    char outbuffer[64];
//    while(1)
//    {
//        // 获取fd = 0中数据，即文件
//        if(fgets(outbuffer,sizeof(outbuffer),stdin) == NULL) break;
//        printf("<%s",outbuffer);
//    }
//    return 0;
//}


//int main()
//{
//  //int fd = open("log.txt",O_WRONLY | O_CREAT | O_TRUNC,0666);
//  int fd = open("log.txt",O_WRONLY | O_CREAT | O_APPEND,0666);
//  if(fd < 0)
//  {
//    perror("open");
//    return 1;
//  }
//  dup2(fd,1);
//  printf("hello linux\n");
//  fprintf(stdout,"hello linux\n"); 
//  return 0;
//}

//int main()
//{
//  close(1);
//  int fd = open("log.txt",O_WRONLY | O_CREAT | O_TRUNC,0666);
//  if(fd < 0)
//  {
//    perror("open");
//    return 1;
//  }
//  printf("fd: %d\n",fd);
//  fflush(stdout);
//  close(fd);
//  return 0;
//}

//int main()
//{
//  close(2);
//  //close(0);
//  int fd = open("log.txt",O_WRONLY | O_CREAT | O_TRUNC,0666);
//  if(fd < 0) 
//  {
//    perror("open");
//    return 1;
//  }
//  printf("fd: %d\n",fd);
//  return 0;
//}

//int main()
//{
//  //0 1 2 默认打开 
//  printf("stdin->fd: %d\n",stdin->_fileno);
//  printf("stdout->fd: %d\n",stdout->_fileno);
//  printf("stderr->fd: %d\n",stderr->_fileno);
//  // 普通文件创建的
//  FILE* fp = fopen("log.txt","w");
//  if(fp == NULL) return 1;
//  printf("fd: %d\n",fp->_fileno);
//
//  FILE* fp1 = fopen("log1.txt","w");
//  if(fp == NULL) return 1;
//  printf("fd: %d\n",fp1->_fileno);
//  
//  FILE* fp2 = fopen("log2.txt","w");
//  if(fp == NULL) return 1;
//  printf("fd: %d\n",fp2->_fileno);
//  return 0;
//}

//int main()
//{
//  char buf[1024];
//  // 从键盘读取sizeof(buf)个字节到buf中
//  ssize_t s = read(0, buf, sizeof(buf));
//  if(s > 0)
//  {
//    buf[s] = 0;// 设置结尾\0
//    // 将buf的strlen(buf)长度写到显示器中
//    write(1, buf, strlen(buf));
//    write(2, buf, strlen(buf));
//  }
//  return 0;
//}

//int main()
//{
//  // 查看open返回值是什么
//  int fda = open("loga.txt",O_WRONLY | O_CREAT | O_TRUNC,0666);
//  printf("fda : %d\n",fda);
//  int fdb = open("logb.txt",O_WRONLY | O_CREAT | O_TRUNC,0666);
//  printf("fdb : %d\n",fdb);
//  int fdc = open("logc.txt",O_WRONLY | O_CREAT | O_TRUNC,066);
//  printf("fdc : %d\n",fdc);
//  int fdd = open("logd.txt",O_WRONLY | O_CREAT | O_TRUNC,0666);
//  printf("fdd : %d\n",fdd);
//  return 0;
//}
